package com.lekang.system.domain.dto;

import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 入住申请工作流DTO
 * 
 * @author 刘卓
 * @date 2025-01-15
 */
@Data
public class CheckInWorkflowDTO {
    
    // ==================== 基础ID信息 ====================
    /** 老人ID */
    public Long elderlyId;
    
    /** 入住管理ID */
    public Long checkInManagementId;
    
    // ==================== 老人基本信息 ====================
    /** 老人姓名 */
    public String name;
    
    /** 身份证号 */
    public String idCard;
    
    /** 联系电话 */
    public String contact;
    
    /** 家庭住址 */
    public String address;
    
    /** 老人照片URL */
    public String photo;
    
    /** 身份证正面照片URL */
    public String idCardFront;
    
    /** 身份证反面照片URL */
    public String idCardBack;
    
    /** 性别 (字符串：男/女) */
    public String gender;
    
    /** 出生日期 */
    public Date birthDate;
    
    /** 年龄 */
    public Long age;
    
    /** 民族（数据字典ID） */
    public Long ethnicity;
    
    /** 政治面貌（数据字典ID） */
    public Long politicalStatus;
    
    /** 婚姻状况（数据字典ID） */
    public Long maritalStatus;
    
    /** 文化程度（数据字典ID） */
    public Long education;
    
    /** 经济来源（数据字典ID） */
    public Long incomeSource;
    
    /** 户籍地址 */
    public String registeredAddress;
    
    
    // ==================== 健康评估信息 ====================
    /** 健康状况 */
    public String healthStatus;
    
    /** 自理能力等级 (自理/半自理/不能自理) */
    public String selfCareLevel;
    
    /** 护理等级代码 (LEVEL_1/LEVEL_2/LEVEL_3等) */
    public String nursingLevelCode;
    
    /** 护理等级名称 */
    public String nursingLevelName;
    
    /** 既往病史 */
    public String medicalHistory;
    
    /** 过敏史 */
    public String allergyHistory;
    
    /** 当前用药情况 */
    public String currentMedication;
    
    /** 饮食习惯 */
    public String dietHabit;
    
    /** 特殊需求 */
    public String specialNeeds;
    
    /** 评估日期 */
    public Date assessmentDate;
    
    /** 评估人员 */
    public String assessor;
    
    
    // ==================== 入住配置信息 ====================
    /** 护理等级ID */
    public Long nursingLevelId;
    
    /** 床位ID */
    public Long bedId;
    
    /** 床位编号 */
    public String bedNo;
    
    /** 房间号 */
    public String roomNo;
    
    /** 楼栋 */
    public String buildingNo;
    
    /** 入住开始时间 */
    public Date checkInStartTime;
    
    /** 入住结束时间 */
    public Date checkInEndTime;
    
    /** 费用期限开始时间 */
    public Date feeStartDate;
    
    /** 费用期限结束时间 */
    public Date feeEndDate;
    
    /** 押金 */
    public BigDecimal deposit;
    
    /** 护理费 */
    public BigDecimal nursingFee;
    
    /** 床位费 */
    public BigDecimal bedFee;
    
    /** 其他费用 */
    public BigDecimal otherFee;
    
    /** 医保支付 */
    public BigDecimal medicalInsurancePayment;
    
    /** 政府补贴 */
    public BigDecimal governmentSubsidy;
    
    /** 费用备注 */
    public String feeRemark;
    
    /** 缴费方式 (月付/季付/年付) */
    public String paymentMethod;
    
    /** 缴费周期 */
    public Integer paymentCycle;
    
    
    // ==================== 合同信息 ====================
    /** 合同编号 */
    public String contractNo;
    
    /** 合同名称 */
    public String contractName;
    
    /** 合同开始日期 */
    public Date contractStartDate;
    
    /** 合同结束日期 */
    public Date contractEndDate;
    
    /** 合同甲方（养老院） */
    public String partyAName;
    
    /** 合同乙方（老人） */
    public String partyBName;
    
    /** 合同丙方（家属/监护人）姓名 */
    public String partyCName;
    
    /** 合同丙方电话 */
    public String partyCPhone;
    
    /** 合同丙方与老人关系 */
    public String partyCRelation;
    
    /** 合同丙方身份证号 */
    public String partyCIdCard;
    
    /** 合同文件URL */
    public String contractFile;
    
    /** 合同签订日期 */
    public Date contractSignDate;
    
    /** 签约日期 */
    public Date signDate;
    
    /** 合同状态 (草稿/待签/已签/终止) */
    public String contractStatus;
    
    
    // ==================== 紧急联系人信息 ====================
    /** 紧急联系人列表 */
    public List<EmergencyContactDTO> emergencyContacts;
    
    /** 家庭成员列表 */
    public List<FamilyMemberDTO> familyMembers;
    
    
    // ==================== 工作流相关信息 ====================
    /** 申请人ID */
    public Long applicantId;
    
    /** 申请人姓名 */
    public String applicantName;
    
    /** 申请时间 */
    public Date applyTime;
    
    /** 申请原因/备注 */
    public String applyRemark;
    
    /** 流程实例ID */
    public String processInstanceId;
    
    /** 当前任务ID */
    public String currentTaskId;
    
    /** 当前审批人 */
    public String currentApprover;
    
    /** 审批意见 */
    public String approvalComment;
    
    /** 工作流状态 (待提交/审批中/已通过/已拒绝/已撤回) */
    public String workflowStatus;
    
    
    // ==================== 其他信息 ====================
    /** 入住来源 (自主入住/社区推荐/医院转介等) */
    public String checkInSource;
    
    /** 医保类型 */
    public String medicalInsuranceType;
    
    /** 医保卡号 */
    public String medicalInsuranceNo;
    
    /** 是否有传染病 */
    public Boolean hasInfectiousDisease;
    
    /** 是否有精神疾病 */
    public Boolean hasMentalDisease;
    
    /** 宗教信仰（数据字典ID） */
    public Long religion;
    
    /** 兴趣爱好（数据字典ID） */
    public Long hobbies;
    
    /** 医疗保障（数据字典ID） */
    public Long medicalInsurance;
    
    /** 医保卡号 */
    public String medicalCardNo;
    
    /** 备注 */
    public String remark;
    
    /** 创建时间 */
    public Date createTime;
    
    /** 更新时间 */
    public Date updateTime;
    
    /** 创建人 */
    public String createBy;
    
    /** 更新人 */
    public String updateBy;
    
    
    /**
     * 紧急联系人DTO
     */
    @Data
    public static class EmergencyContactDTO {
        /** 姓名 */
        public String name;
        
        /** 关系 */
        public String relation;
        
        /** 电话 */
        public String phone;
        
        /** 身份证号 */
        public String idCard;
        
        /** 地址 */
        public String address;
        
        /** 是否为主要联系人 */
        public Boolean isPrimary;
        
        /** 排序 */
        public Integer sort;
    }
    
    
    /**
     * 家庭成员DTO
     */
    @Data
    public static class FamilyMemberDTO {
        /** 姓名 */
        public String name;
        
        /** 关系 */
        public String relationship;
        
        /** 电话 */
        public String contact;
        
        /** 身份证号 */
        public String idCard;
        
        /** 地址 */
        public String address;
        
        /** 是否紧急联系人（0否 1是） */
        public String isEmergencyContact;
        
        /** 工作单位 */
        public String workUnit;
        
        /** 是否同住 */
        public Boolean liveTogether;
        
        /** 排序 */
        public Integer sort;
    }
}
